/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gui;

import java.awt.Choice;
import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JPanel;
import logic.BDManage;

/**
 * Clase JPanelCategoria encargada de mostrar la lista de categorias creadas.
 * @author Victoria Fuenmayor y José Gabriel Rivera
 */
public class JPanelCategoria extends JPanel{
 
    private Choice selectorCat;
    private int nroCategorias;
    private BDManage categoria;
    private GUI gui;
    
    /**
     * Recibe GUI y una categoria del tipo BDManage, inicializa los componentes.
     * Crea una variable del tipo Choice, carga las categorias y sobreescribe el método de itemListener.
     * @param categoria
     * @param gui 
     */
    public JPanelCategoria(BDManage categoria,GUI gui){
        this.categoria = categoria;
        this.gui = gui;
        selectorCat = new Choice();
        this.add(selectorCat);
        this.setLayout(new GridLayout(1,0));
        this.CargarCat();
        selectorCat.addItemListener(new ItemListener() {

            @Override
            public void itemStateChanged(ItemEvent e) {
                evento();
            }
        });
                 
    }
    
    /**
     * Método encargado de cargas las categorías en el Choice.
     * Realiza una iteración que agrega cada nombre de los item a la lista.
     * Además tiene un contador que indica el número de categorías creadas.
     */
    public void CargarCat(){
        this.nroCategorias=0;
        selectorCat.removeAll();
        selectorCat.add("Categorías");
                
        for (int i=0; i<categoria.getLength(); i++){
            if (categoria.getObject(i) !=null){ 
                selectorCat.addItem(categoria.getObject(i).getNombre());
                this.nroCategorias++;
            }
        }
    }
    
    /**
     * Retorna el ID de la categoría seleccionada.
     * @return el ID de la categoria (tipo entero). 
     */
    public int getIdCat(){
        if(selectorCat.getSelectedItem().equals("Categorías")){
            return -1;
        }else{
            return gui.getCategoria().buscarObjeto(selectorCat.getSelectedItem()).getId();
        }
    }
    
    /**
     * Acción que realiza el botón/item al ser seleccionado.
     * Carga las categorias (en caso de existir alguna) y hace visible el panel.
     * En caso contrario oculta todas las ventanas que se muestran en el JFrame principal (GUI).
     */
    public void evento(){
        if (getIdCat()>=0){
            gui.getListaRifa().CargarRifas(getIdCat());              
            gui.getListaRifa().setVisible(true);
        }else{
            gui.getListaRifa().setVisible(false);
            gui.getPanelInfoRifa().setVisible(false);
            gui.getPanelInfoCliente().setVisible(false);
            gui.getPanelBoletos().setVisible(false);
            gui.getjButtonComprar().setVisible(false);
            gui.getBotonPagar().setVisible(false);
            gui.getCopiarCliente().setVisible(false);
        }
    }

    /**
     * Retorna el numero de categorías que existen.
     * @return nro de categorias (tipo entero).
     */
    public int getNroCategorias() {
        return nroCategorias;
    }
    
    
    
}
